package qgs.zisu.javaconcurrency.javaconcurrency.chapter2;

/**
 * @Author: 蔡翔
 * @Date: 2019/9/4 21:48
 * @Version 1.0
 *
 * 创建线程有两种方式：
 *
 * 1. extends Thread 继承了Thread这个类。那么TicketWindow这个类就在单独一个线程里面跑了
 * 2. 实现Runnable 接口，实例化以后，传给Thread ，然后启动 Thread这个线程。
 */


public class TicketWindow extends Thread {
    private final String names;

    //把 MAX 设置成 static 就可以使三个线程 访问同一个变量。在一个统一的地方控制这个变量，就会使多线程之间不会出现重复的数字（乱套）
    private static final int MAX = 50 ;

    //如果不设置static ，每次new 一个TicketWindow 都会创建一个index，如果是static 每次new 一个TicketWindow 是不会新建index的
    //因为 static 是存到内存的，就算这个类销毁了，index 也不会销毁，因为不是放到类空间的。
    private static int index = 1;

    public TicketWindow(String names){
        this.names = names;
    }


    @Override
    public void run() {
        //run 方法就是当前线程 执行的一个逻辑代码块。
        while (index <= MAX){
            System.out.println("柜台："+names+",当前的号码是："+(index++));
        }
    }
}
